//
//  SafeArea.swift
//  BTE
//
//  Created by Mike Zhang on 2025/8/14.
//

import UIKit

// MARK: - UIViewController 扩展
extension UIViewController {
    
    /// 获取状态栏高度（兼容 iOS 15+）
    var statusBarHeight: CGFloat {
        if #available(iOS 15.0, *) {
            return view.window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0
        } else {
            return UIApplication.shared.statusBarFrame.height
        }
    }
    
    /// 获取导航栏高度
    var navigationBarHeight: CGFloat {
        return navigationController?.navigationBar.frame.height ?? 0
    }
    
    /// 获取安全区域顶部高度（最可靠的方式）
    var safeAreaTop: CGFloat {
        return view.safeAreaInsets.top
    }
    
    /// 获取状态栏和导航栏的总高度
    var totalTopHeight: CGFloat {
        return statusBarHeight + navigationBarHeight
    }
    
    /// 获取当前视图控制器的窗口（更安全的方式）
    private var currentWindow: UIWindow? {
        if #available(iOS 15.0, *) {
            return view.window
        } else {
            return UIApplication.shared.windows.first(where: { $0.isKeyWindow })
        }
    }
}

// MARK: - UIView 扩展（更通用的安全区域获取）
extension UIView {
    /// 获取安全区域顶部高度
    var safeAreaTop: CGFloat {
        return safeAreaInsets.top
    }
    
    /// 获取安全区域底部高度
    var safeAreaBottom: CGFloat {
        return safeAreaInsets.bottom
    }
    
    /// 获取安全区域总高度
    var safeAreaHeight: CGFloat {
        return safeAreaLayoutGuide.layoutFrame.height
    }
}
